package com.team7.happycommunity.personcentor.service;

import com.team7.happycommunity.personcentor.entity.Dynamic;
import com.team7.happycommunity.personcentor.entity.MyPublishAcitivity;
import com.team7.happycommunity.personcentor.entity.PersonUser;
import javafx.fxml.LoadException;

import java.util.List;

/**
 * (PersonUser)表服务接口
 *
 * @author makejava
 * @since 2020-03-20 19:21:36
 */
public interface PersonUserService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    PersonUser queryById(Integer id);

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
    List<PersonUser> queryAllByLimit(int offset, int limit);

    /**
     * 新增数据
     *
     * @param personUser 实例对象
     * @return 实例对象
     */
    PersonUser insert(PersonUser personUser);

    /**
     * 修改数据
     *
     * @param personUser 实例对象
     * @return 实例对象
     */
    PersonUser update(PersonUser personUser);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 搜索邮箱是否存在
     * @param mailbox
     * @return
     */
    boolean queryMailbox(String mailbox);

    /**
     * 注册
     * @param user
     */
    void register(PersonUser user);

    /**
     * 修改邮箱状态
     * @param code
     */
    void updateMailboxStatus(String code);

    /**
     * 登录
     * @param text
     * @param password
     */
    PersonUser login(String text, String password) throws Exception;

    /**
     * 手机号码注册
     * @param cellPhNumber
     * @param resetCode 重置参数 1，密码重置，空，注册
     */
    void phoneRegister(String cellPhNumber, String resetCode);

    /**
     * 验证码校正
     * @param code 验证码
     * @param phone 手机号
     */
    void codeCheck(String code, String phone);

    /**
     * 重置密码
     * @param cellPhNumber 手机号码
     * @param password 密码
     */
    void updatePasswordByCellPhNumber(String cellPhNumber, String password) throws Exception;

    /**
     * 查询个人信息和住宅的小区信息以及头像
     * @param name 用户姓名
     * @return
     */
    PersonUser queryPersonInfoByName(String name);

    /**
     * 通过旧密码修改新密码
     * @param oldPassword 旧密码
     * @param password 新密码
     * @param name 用户姓名
     */
    void updatePasswordBypassword(String name,String oldPassword, String password) throws Exception;

    /**
     * 查询个人帖子动态
     * @param name 用户姓名
     * @return
     */
    List<Dynamic> queryDynamicInfoByName(String name);

    /**
     * 根据用户名查询我发布的活动
     * @param name 用户名
     * @return
     */
    List<MyPublishAcitivity> queryMyPublishAcitivity(String name);

    /**
     * 查询我参加的活动
     * @param name
     * @return
     */
    List<MyPublishAcitivity> queryJoinAcitivity(String name);
    /**
     * 查询我收藏的帖子
     * @param name
     * @return
     */
    List<Dynamic> queryMyAttentionDynamicByName(String name);

    /**
     * 头像上传
     * @param userName 用户名
     * @param imgurl 头像的url
     */
    void updateHeadImage(String userName, String imgurl);
}